import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

import java.io.IOException;
import java.net.URI;

/**
 * @author xyr
 * @date 2021/10/12 10:05
 */
public class DemoThree {

    public static void main(String[] args) throws IOException {
        //案例3： 上传本地文件到hdfs

        System.setProperty("hadoop.home.dir","D:\\code\\hadoop-2.7.3");
        System.setProperty("HADOOP_USER_NAME","root");

        String  url ="hdfs://192.168.9.11:9000";
        //加载hdfs配置
        Configuration conf = new Configuration();
        //建立hdfs连接
        FileSystem fileSystem =FileSystem.get(URI.create(url),conf);

//        try {
//
//
//        //本地的文件
//        Path srcpath =new Path("D:\\17code\\17demo.txt");
//        //hdfs的路径
//        Path destPath =new Path("/test/");
//        //使用hadoop的copy
//        fileSystem.copyFromLocalFile(srcpath,destPath);
//        }catch (Exception e){
//            e.printStackTrace();
//        }
//

//        //案例四:修改文件名字
//        //原文件名字
//        Path srcName = new Path("/test/17demo.txt");
//        //目标文件名字
//        Path destName =new Path("/test/17demoNew.txt");
//        //修改文件名字
//        boolean f=fileSystem.rename(srcName,destName);
//        System.out.println(f==true?"更名成功":"更名不成功");

//        //案例5：删除
//        Path path =new Path("/test/17.txt");
//        boolean b=fileSystem.delete(path);
//        System.out.println(b==true?"删除成功":"删除失败");

//        //案例六：创建文件夹
//        Path path =new Path("/test/17test");
//        boolean f= fileSystem.mkdirs(path);
//        System.out.println(f==true?"创建成功":"创建失败");

        //案例七：查看文件列表内容状态
        String urlNew = "hdfs://192.168.9.11:9000/test";
       FileStatus [] fileStatuses= fileSystem.listStatus(new Path(urlNew));
       for(FileStatus fileStatus:fileStatuses){
           if(fileStatus.isFile()){
               System.out.println("file:"+fileStatus.getPath().toString());
           }else {
               System.out.println("directory:"+fileStatus.getPath().toString());
           }
       }

   }
}
